//
//  TSCMyTextView.h
//  Tsc_IOS
//
//  Created by Rio on 15-10-17.
//  Copyright (c) 2015年 idream. All rights reserved.
//
// 使用时注意：
// 1. UITextView如果在Storyboard中设置了初始时的text，将“可能”（这里使用“可能”，是因为如果界面只有一个UITextView，可能就不会有此问题了，不过没有试验过）导致界面初次加载很慢。所以，应该通过代码方式，在viewDidLoad()中再设置UITextView的text
//
// 2. 关于代理的使用：
// 2.1 如果仅使用UITextView.delegate自身进行代理设置，可以将UITextView自身（self）设置为delegate；
// 2.2 但如果要使用multicastDelegate，则不能将UITextView自身（self）设置为delegate，否则将导致TSCMyMulticastDelegate.forwardInvocation()被死循环调用。当使用多播代理时，应该单独给UITextView建立一个“内部类”，充当delegate，方可避免死循环的问题
// 参考资料详见TSCMyMulticastDelegate.h顶部的说明

#import <UIKit/UIKit.h>

@interface TSCMyTextView : UITextView
// <UITextViewDelegate>

@property (nonatomic, copy) NSString * placeholder;

// @property (nonatomic, copy) UITextView * tvPlaceholder;
- (void) setPlaceholderTextViewHidden:(BOOL)hidden; // 为了不暴露tvPlaceholder给外部使用者，但又为了让TSCMyTextViewDelegate能够控制，故封装此方法

@end


// 为避免将UITextView自身（self）设置为<UITextViewDelegate>，需要单独提供一个“内部类”，对代理事件进行监听
@interface TSCMyTextViewDelegate : NSObject <UITextViewDelegate>

@property (nonatomic, strong) TSCMyTextView * myTextView; // 代理中保存TSCMyTextView的引用

@end